In general the display sub-systems in present day work stations and personal computers include frame buffers and utilize bit mapped graphics. An electronic representation of the on-screen image is stored in the frame buffer. The image stored in the frame buffer is in effect a time-slice of what appears on the display screen and it can be updated at a relatively slow rate, but it is read out and sent to the screen dozens of times per second.
A central processing unit (CPU) and an operating system control the image being displayed by sending commands to the display sub-system. These commands cause new data to be stored in the frame buffer. Updating the frame buffer in effect updates the image that appears on the screen.
Present day video frame buffers store the color of each pixel in the image. The color information in the frame buffer is often described as consisting of "color planes". The number of color planes utilized in a system determines the "bit-depth", and hence the number of different colors that can be accommodated.
Systems termed "true color systems" have a color bit-depth of 24 bits. A true color system can store and theoretically display any one of 16,777,216 colors or hues. While true color systems are commercially available, many monitors can only display 262,144 colors which corresponds to a bit-depth of 18. Furthermore for displays used in general purpose applications 32,768 colors and in some cases 215 colors is adequate.
Many presently available graphic sub-systems provide a mechanism for translating colors specified by programs running on a system's CPU into the colors that can be displayed on the particular display screen connected to the system. The mechanism that is in general use is termed a "color look up table" or a CLUT. The color bits stored in the frame buffer operate as pointers to bits which determine which particular color in a color palette will in fact be displayed. Thus, the CLUT maps the colors specified by the color planes in a frame buffer into the particular colors which will in fact be displayed.
For example in a system where the frame buffer stores one byte (8 bits) of information for each pixel, and the display can show 262,144 different colors, the CLUT would have 256 entries, one for each possible combination of 8 bits. The CLUT could have 18 bits in each entry therefore accommodating 262,144 different colors or hues. The data stored in the CLUT would determine which particular one of the 262,144 possible hues would appear on the screen for each of the 256 possible combinations specified by the color bits stored in the frame buffer.
A block diagram of a present day personal computer or work station is shown in FIG. 1A. As shown the system includes a system unit 2 and a display 8. The system unit 2 includes a CPU 3, an operating subsystem 4, a display subsystem device driver program 5, and a display subsystem card 6. The operating system 4 communicates with the display subsystem through the device driver 5. One example of the type of system shown in FIG. 1A is the type of system often termed an IBM compatible personal computer. The operating system 4 could for example be the "Windows 3.1" operating system marketed by Microsoft Corporation of Redmond Wash.
A block diagram of the graphic card 6 (i.e. the graphic subsystem) is shown in FIG. 1B. The card 6 connects to the CPU 3 in the system unit 2, via connectors 10 which are located on the end of the card 6. The CPU 3 or more particularly the operating system 4 sends commands to the device driver 5 which in turn sends them to the display subsystem via connectors 10. The commands from the device driver 5 are stored in registers 12. Logic 13 decodes and responds to the commands stored in registers 12 and stores information in VRAM frame buffer 14. Information is repeatedly read out of the VRAM buffer by refresh circuit 15 which sends signals to the display 8 via cable 7. As each pixel position in the frame buffer 16 is addressed, the color bits are used to address a location in the CLUT 16. The addressed location in CLUT 16 provides a value to DAC 18 which generates an analog signal which generates the particular color on the display.
When the system is first initialized, the device driver 5 loads the CLUT 16 with what is often termed a palette. The CLUT 16, operating according to the palette that is loaded at initialization time, translates subsequent color data from VRAM 14 into colors required by display 8.
Several different type of bit map file formats have become de-facto standards. The two which are relevant to the present invention are termed "Device Independent Bit Maps" and "Device Dependent Bit Maps". Files which use the Device Independent Bit Map format are generally called DIB files. When the operating system sends a command to the graphic system's device driver 6, the operating command specifies whether or not the command relates to a DIB file. If the command does relate to a DIB, a translation table is also sent to the device driver so that the logical colors specified in the DIB can be translated to actual colors required by the systems display, Furthermore the pixels in a DIB can have any one of four different color formats, namely, one, four, eight or twenty four bits. The device driver must translate the one, four, eight or twenty four bit format used by the particular DIB into the format used by the particular display sub-system. For example, if a DIB uses an eight bit format and the display is a true color display which uses a twenty four bit color format, the device driver must translate the color information associated with each bit in the DIB from eight to twenty four bits. The device driver must also either perform the translation specified by the translation table which accompanies the DIB or the device drive must reload the CLUT in the display subsystem. These processes which must be performed by the device driver can be very time consuming.
The present invention is directed to facilitating the execution of DIB files which are provided to a video sub-system for execution.